Batch
W systemach Windows można stosować takie pliki do tworzenia prostych programów. Ponieważ działają one głównie w trybie tekstowym do ich tworzenia wymagana jest znajomość komend MS-DOS, które nie zostaną tutaj opisane. Hello World Zaczynamy od standardowego Hello World: @echo off echo Hello World pause I uruchamiamy program dwuklikiem. Wyświetli on napis Hello World i poprosi o naciśnięcie dowolnego klawisza. Opis komend: *@echo off - wyłączenie wyświetlania komend na ekranie. *echo - wyświetlenie tekstu. Jako argumenty podajemy tekst do wyświetlenia. *pause - oczekiwanie na naciśnięcie dowolnego klawisza. Ze znajomością tych kilku komend możesz już pisać programy służące do robienia powtarzających się czynności, np. kopiowania plików a następnie przetwarzania ich. Jednak taki program nie jest interakcyjny, czyli nie pozostawia wyboru użytkownikowi co do jego działania. Przyjmowanie danych W trakcie działania programu Zaczniemy od przyjmowania danych w oknie programu. Oto kod: @echo off set /p imie=Jak masz na imię? echo Witaj %imie%! pause Ten program zapyta nas o imię i wyświetli je. Komendy: * set /p zmienna=zacheta - zapytanie o coś i zapisanie tego jako tzw. zmienna środowiskowa. Zmienne środowiskowe mogą być stałe, jak na przykład COMSPEC zawierająca ścieżkę do interpretera poleceń. Nazwy zmiennych podajemy ograniczone procentami. Jako argumenty Argumenty to dane przyjmowane w momencie uruchamiania. Możemy je wpisywać przez konsolę lub w oknie Właściwości. Są one oznaczane jako %1, %2, itd. Jeżeli uruchamiamy coś w jakimś programie, to zostanie mu to podane jako pierwszy argument i możemy to wykorzystać. Dla przykładu, oto program "cicho" usuwający uruchamiany plik: @echo off if exist %1 del %1 Linijka if exist %1 del %1 oznacza jeżeli istnieje %1 usuń %1 (zachowano oryginalną składnię). Jeżeli program zostanie uruchomiony bez argumentu nic się nie stanie. Więcej o instrukcjach warunkowych dowiesz się w następnym dziale. Instrukcje warunkowe i interakcja ze środowiskiem Napiszemy sobie teraz program z listą stron internetowych. Po wpisaniu numeru którejś zostanie uruchomiona przeglądarka internetowa z tą stroną. Kod: @echo off echo POLECANE STRONY INTERNETOWE echo 1 - Wikibooks echo 2 - Wikipedia echo 3 - Pliki wsadowe w Wikibooks echo 4 - Pliki wsadowe w Wikipedii set /p odp=Podaj numer strony do uruchomienia? if %odp% "1" start "iexplore.exe http://pl.wikibooks.org" if %odp% "2" start "iexplore.exe http://pl.wikipedia.org" if %odp% "3" start "iexplore.exe http://pl.wikibooks.org/Pliki_wsadowe" if %odp% "4" start "iexplore.exe http://pl.wikibooks.org/Program_wsadowy" if not %odp% "1" exit if not %odp% "2" exit if not %odp% "3" exit if not %odp% "4" exit Oczywiście możesz (no dobra, powinieneś) zmienić iexplore.exe na ścieżkę do własnej przeglądarki internetowej. Komendy: * if not exist cos cos komenda - jeżeli coś równa się czemuś wykonaj komendę. Jeżeli użyte jest not, stanie się przeciwieństwo - jeżeli coś nie równa się czemuś wykonaj komendę. Jeżeli użyte jest exist, zamiast zwykłego sprawdzenia warunku sprawdzane jest istnienie danego pliku (w przykładzie w poprzednim rozdziale). * start - wykonanie jakiegoś programu w osobnym oknie. * call - odmiana komendy start służąca do uruchomienia jakiegoś pliku wsadowego w tym samym oknie. Może służyć do podzielenia skomplikowanego programu na mniejsze części (tutaj niewykorzystana). Wykorzystanie instrukcji warunkowych w celu znalezienia pliku. if exist c:\moje\zm.txt goto 1 if not exist c:\moje\zm.txt goto 2 :1 echo Znaleziono plik. pause >nul exit :2 echo Nie znaleziono pliku. pause >nul exit Etykiety Etykieta to narzędzie pozwalające na "skakanie" po kodzie. Wykorzystamy je do zapętlenia powyższego programu - pytanie o numer strony będzie się pojawiać dopóki, dopóty nie poda się jako numer strony litery q (od quit). Kod: @echo off echo POLECANE STRONY INTERNETOWE :tekst cls echo 1 - Wikibooks echo 2 - Wikipedia echo 3 - Pliki wsadowe w Wikibooks echo 4 - Pliki wsadowe w Wikipedii :zapytanie set /p odp=Podaj numer strony do uruchomienia (q aby wyjść, t aby powtórzyć strony)? if %odp% "q" goto wyjscie if %odp% "t" goto tekst if %odp% "1" start "iexplore.exe http://pl.wikibooks.org" if %odp% "2" start "iexplore.exe http://pl.wikipedia.org" if %odp% "3" start "iexplore.exe http://pl.wikibooks.org/Pliki_wsadowe" if %odp% "4" start "iexplore.exe http://pl.wikipedia.org/Program_wsadowy" if not %odp% "q" goto tekst if not %odp% "t" goto tekst if not %odp% "1" goto tekst if not %odp% "2" goto tekst if not %odp% "3" goto tekst if not %odp% "4" goto tekst goto zapytanie :wyjscie Zadeklarowaliśmy sobie trzy etykiety (zaznaczone na fioletowo). Instrukcja goto służy do "skakania" między nimi. Po sprawdzeniu argumentu program wraca się do etykiety zapytanie. Jeżeli argumentem było q program idzie od razu do etykiety wyjscie - program się kończy, jeżeli t program wraca do początku i ponownie wyświetla polecane strony. Komentarze Jeżeli chcemy opisać dany fragment programu, musimy skorzystać z komendy Rem, czyli np: @echo off Rem pojawi się komunikat echo Hello World Rem wstrzymanie pracy programu pause Zapisywanie danych do pliku Zapisywanie danych do pliku tekstowego odbywa się za pomocą symbolu > lub >> . Oto dwa przypadki: rem Przypadek 1 set /a m=2 echo %m% >>zm.txt pause >>nul rem Przypadek 2 set /a m=2 echo %m% >zm.txt pause >>nul W przypadku pierwszym komenda set /a przyporządkowała zmiennej m cyfrę 2 a symbol >> dopisał zmienną do pliku zm.txt lub utworzył nowy gdyby nie było zm.txt. W przypadku drugim symbol > kasował dane z pliku zm.txt i zapisał nowe lub utworzył nowy gdyby nie było zm.txt Gdy skorzystamy z tego ułatwienia, możemy zapisać pause >nul tzn. nie będziemy widzieć "Aby kontynuować, naci˜nij dowolny klawisz . . . " na ekranie konsoli. Zakończenie Teraz już potrafisz pisać proste programiki dla systemów Windows. Jeżeli zabrakło Ci jakiejś funkcji, napisz w dyskusji a następnie dobrze poszukaj ;). Wszystkie kody źródłowe wykorzystane w tym module dostępne są na licencji MIT (Expat) Kategoria:Inne języki programowania